package com.rcadmin.busi.web.service;

import java.util.List;
import java.util.Map;

import javax.annotation.Resource;

import org.springframework.stereotype.Component;

import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import com.rcadmin.busi.admin.ddl.SysParam;
import com.rcadmin.busi.web.dao.TemplatePackageDao;
import com.rcadmin.busi.web.ddl.WebTemplatePackage;
import com.rcadmin.core.jpa.DaoException;

/**
 * 
 * @author tanson lam
 * @create 2016年10月15日
 */
@Component
public class TemplatePackageService {
	@Resource
	private TemplatePackageDao templatePackageDao;

	/**
	 * 查找单个主题包信息
	 * 
	 * @param userId
	 * @param templatePackageId
	 * @return
	 */
	public WebTemplatePackage findOne(Integer userId, Integer templatePackageId) {
		return templatePackageDao.findOne(userId, templatePackageId);
	}

	/**
	 * 根据IDS查询多个主题信息
	 * 
	 * @param ids
	 * @return
	 * @throws DaoException
	 */
	public Map<Integer, WebTemplatePackage> findByIds(List<Integer> ids) {
		Map<Integer, WebTemplatePackage> map = Maps.newHashMap();
		List<WebTemplatePackage> list = templatePackageDao.findByIds(ids);
		if (list.isEmpty())
			return map;
		for (WebTemplatePackage model : list) {
			map.put(model.getId(), model);
		}
		return map;
	}

	/**
	 * 获取主题信息，并封装到{@link #SysParam}对象列表返回。
	 */
	public List<SysParam> findTemplatePackageParam(Integer userId) {
		List<WebTemplatePackage> grouplist = templatePackageDao.findAll(userId);
		List<SysParam> sysParamList = Lists.newArrayList();
		for (WebTemplatePackage g : grouplist) {
			SysParam p = new SysParam();
			p.setParamValue(g.getId().toString());
			p.setParamName(g.getName());
			sysParamList.add(p);
		}
		return sysParamList;
	}

	/**
	 * 获取主题信息
	 */
	public List<WebTemplatePackage> findEffTemplatePackageByUserId(
			Integer userId) {
		return templatePackageDao.findAllEff(userId);
	}

	/**
	 * 查找用户的主题模板
	 */
	public int countEffTemplatePackage(Integer userId) {
		List<WebTemplatePackage> list = templatePackageDao.findAllEff(userId);
		return list.size();
	}

	/**
	 * 是否有相同的主题名称
	 * 
	 * @param userId
	 * @param templateId
	 * @param templatePath
	 * @return
	 * @throws DaoException
	 */
	public Boolean isDuplicateName(Integer userId, Integer templatePackageId,
			String name) {
		return templatePackageDao.isDuplicateName(userId, templatePackageId,
				name);
	}
}
